程序安装 内容 前言 win7 exe安装 访问地址 数据库版本签名 文件介绍 源码下载问题 登陆首页问题 JRE问题 平台环境问题 源码材料化报错 数据库与源码不一致 乱码问题 字体问题 重新安装 jetty 开启远程X11 前言 参考: 专业安装30年的外国人教程 http://codingtrabla.blogspot.com/2016/08/install-idempiere-erp-on-windows-7-x64.html 优酷安装视频:http://v.youku.com/v_show/id_XMTYzNTI0ODg5Mg==.html 2017-4-30 本安装为3.1教程,虽然过期,安装4.1除了jdk 1.8变了以外,其他都一样。 2017-11-3 有网友安装5.1,和4.1一样,教程继续有效。 exe安装看这里 下载java1.8 http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载postgresql 9.x http://www.postgresql.org/ 或者 oracle x11 http://www.oracle.com/us/products/database/index.html 下载idmpiere 安装包:http://www.idempiere.org/downloads 源码安装看这里 iDempiere4.1开发环境搭建 on WIN10:http://idempiere_development.mydoc.io ===如果非要使用默认源构建源码=== 记得buckminster4.5的安装路径,用这个,用这个,用这个 https://netcologne.dl.sourceforge.net/project/idempiere/binary.file/jarfile/bm-p2/bucky-updates-4.5 ===推荐从官方sf.net文件服务器下载所有依赖包=== 先去sf.net注册一个账号,然后使用下面的命令,或者直接在web界面按文件夹下载。 win需要下载同步软件 3.3M https://www.itefix.net/content/cwrsync-free-edition A. offline file from sourceforge rsync -avrPq hiepgau,idempiere@frs.sourceforge.net:/home/frs/project/idempiere/binary.file /path/to/offline/folder 你需要更改hiepgau,idempiere,分别输入你的用户名和密码 B. open file [idempiere-root]/org.adempiere.sdk-feature/materialize.properties C. modify local.repository.root=http://downloads.sourceforge.net/project/idempiere/binary.file by local.repository.root=file:///path/to/offline/folder (*) change hiepgau by your account offline all document here: http://wiki.idempiere.org/en/Offline_all_material_of_idempiere win7 exe安装 1、检查你的系统版本,运行 systeminfo | findstr based 2、检查你是否安装过jdk,运行 java -version,假设你没有安装。 3、下载iDempiere 5.1 服务器程序。https://sourceforge.net/projects/idempiere/files/v5.1/daily-server/idempiereServer5.1Daily.win64.win64.x86_64.zip/download (253M) 4、下载并安装jdk1.8(1.7已经不支持了) 备注:自定义安装,只用安装jdk就行了,源码和jre都不用安装。 5、下载postgresql (已支持9.4) http://get.enterprisedb.com/postgresql/postgresql-9.5.1-1-windows-x64.exe (61M) 6、安装postgresql,直接输入系统用户postgres的密码。 ①检查postgresql.conf的参数listen_addresses = * (允许所有机器访问数据库),保存后重新载入。 ②添加pg_hba.conf局域网访问权限。 注意:本机测试使用localhost或者127.0.0.1可以不用改,使用主机名必须改。 IPV4 允许所有192.168.1网段的机器访问,host all all 192.168.1.0/24 md5,保存后载入。 IPV6 一共128位,前64位为网段,后64位为终端,host all all fe80::/64 md5,保存后载入。 因为setup配置计算机名,win7下ping该机器名会返回ipv6地址,由于ipv6为自动分配的地址(链路本地地址(Link-LocalAddresses)fe80::/10,相当于169.254.0.0/16),故使用fe80::/64来指定到本机。如果database server是其他机器,先ping再做ip匹配。 注:ipv6使用ULA(Unique Local Address)替代了站点本地地址(Site-Local Addresses),ip地址多了就是大气,搞ios app的开发的人都会配纯ipv6环境,不解释) 7、添加jdk,postgresql的bin路径到系统变量PATH。 ① jdk:JAVA_HOME=C:\java\jdk1.7.0_80,CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar, 在PATH参数后添加“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” (假设你安装在C:\java) ② postgresql:在PATH参数后添加“C:\PostgreSQL\9.5\bin” (假如你安装在C:\) ③ IDEMPIERE_HOME:新建IDEMPIERE_HOME=C:\idempiere_server (bat脚本、swing客户端需要,必须建上) ④ 运行一个cmd,输入SET PATH=C:\ 关闭窗口以刷新环境变量不用重启。再次运行path命令,检查变量生效。 可选步骤: 你可以使用脚本完成,脚本工具在qq群65713012群文件下载。 可选步骤: 你可以手动创建数据库,也可以用系统脚本自动导入数据库。(推荐第一次安装使用系统自带脚本导入新建数据库) 使用postgres用户创建数据库用户idempiere,创建数据库idempiere。 ③使用postgres用户创建数据库用户idempiere,CREATE ROLE idempiere SUPERUSER LOGIN PASSWORD 'idempiere' ④创建数据库idempiere。CREATE DATABASE idempiere ENCODING 'UTF8' TEMPLATE template0 LC_COLLATE 'C' LC_CTYPE 'C' 备注:UTF8必选,COLLATE ,CTYPE 备选提高性能,需要排序在列和表上使用“zh_CN”。 修改用户,ALTER ROLE idempiere SET search_path TO adempiere, pg_catalog ⑤添加UUID函数支持。使用idempiere数据库\c idempiere,输入create extension "uuid-ossp",检查select * from pg_extensions。 测试select uuid_generate_v1(),返回一行随机码成功。(感谢百度知道Andy_Sun321) 8、解压缩iDempiere安装包,运行setup.bat,修改数据库名,用户,密码,测试,保存。 注意:新数据库,数据库账号和密码都填入默认的adempiere,测试时密码框红色不用管。 老数据库,选择db exist,按实际情况输入用户名和密码,测试必须全部绿色。 postgresql: 数据库名称:你的老数据库名称,新数据库名称默认adempiere。 系统用户口令:postgresql安装时的数据库系统用户口令。 数据库端口:默认5432 数据库账号:你的老数据库用户名,新数据库使用默认adempiere。 数据库密码:你的老数据库用户密码,新数据库使用默认adempiere。 oracle: 数据库名称:你的老数据库名称,新数据库名称默认adempiere。 TNS名:默认adempiere 数据库端口:默认1521 系统用户口令:oracle安装时的数据库系统用户口令。 数据库账号:你的老数据库用户名,新数据库使用默认adempiere。 数据库密码:你的老数据库用户密码,新数据库使用默认adempiere。 9、导入数据库。运行utils\RUN_ImportIdempiere.bat。(实际导入seed目录的Adempiere_pg.zip中的dmp) 10、运行idempiere-server.bat,1分钟内命令行窗口出现WebUIServlet.init: iDempiere Web Client started successfully 。 访问http://localhost:8080/webui,成功。 11、关闭服务器程序。在服务器命令行窗口,输入Ctrl+C,选择Y。 参考 http://www.osssme.org/?q=node/26 安装 http://www.cnblogs.com/zzyan/p/4107772.html 安装 http://blog.sina.com.cn/s/blog_446b43c10100bxqv.html 环境变量 http://blog.chinaunix.net/uid-20726500-id-4766163.html 数据库区域 http://pyn1013.blog.163.com/blog/static/9494966720113122018725/ IPV6知识 http://blog.sina.com.cn/s/blog_72a2ef140100pddx.html IPV6地址类型 server运行成功 问的最多的问题 1. JDBC连接错误,( Error connecting: jdbc:postgresql://主机名:5432/template1 - postgres/用户) 日志:===========> Config.testJDBC: org.postgresql.util.PSQLException: ????????: ????? ??????? "192.168.0.4", ???? "postgres", ?????? "template1", SSL ???? ?? pg_hba.c onf ???? [31] 原因:数据库主机使用“主机名”,JDBC返回主机名的IP,而该IP在postgresql的pg_hba.conf没有定义访问权限。 解决:主机还成localhost,不用改,如果局域网测试,用主机名或者IP地址,改pg_hba.conf。 2. cmd日志停在 -----------> DefaultAnnotationProcessor.fallbackToManualAnnotatedClasses: Unable to detect annotations. Application may fail to deploy. [13],但是无法访问http://机器名:端口/webui 原因:postgresql的pg_hba.conf没有你的setup 主机访问权限,特别是在win7/10环境,使用IP6导致无法连接。 解决:修改pg_hba.conf,添加你的数据库主机访问权限。 3. 登陆用户和密码是多少? 看 [访问地址](http://idempiere_guide_sm.mydoc.io/?t=134383#widget_6514866) 4. 语言包在哪里下载? 看 [附:中文汉化包](http://idempiere_guide_sm.mydoc.io?v=${version}&t=134391) 5. 如何从老版本迁移到最新版本? 看官方通知,然后参考[版本升级](http://idempiere_guide_sm.mydoc.io?v=${version}&t=179279) 主机名惹得祸 不装JDK(SE),只装JRE,jar用不了 访问地址 以localhost为例: ERP: http://localhost:8080/webui 用户名/密码:GardenAdmin, 管理员/密码:System Webstore:http://localhost:8080/wstore Monitor:http://localhost:8443/idempiereMonitor 管理员/密码:System osgi:http://localhost:8080/osgi/system/console 管理员/密码:System 注意: id逐渐取消swing客户端,POS只能在swing客户端工作。用户可安装支持osgi的POS插件。 命令行关闭服务器 c:\> telnet telnet> open localhost 12612 osgi>close 数据库版本签名 ==报错日志: 11:12:23.933 Adempiere.startup: iDempiere(r) Release 5.1_2017-10-31 -Smart Suite ERP, CRM and SCM- (c) 1999-2016 iDempiere(r); Implementation: iDempiere - Supported by iDempiere community [16] 11:12:23.938 Ini.loadProperties: D:\idempiere\id_bin\idempiere-server_51\idempiere.properties #28 [16] 11:12:26.414-----------> Node: [169.254.138.104]:5701 [adempiere.idempiere/localhost] [3.5.3] No join method is enabled! Starting standalone. [36] 11:12:26.752 DB.isBuildOK: Build DB=4.1.0.v20170505-0431 [16] 11:12:26.754 DB.isBuildOK: Build Cl=5.1.0.v20171102-1854 [16] 11:12:26.786-----------> DB.isBuildOK: Build Version Error The program assumes build version 5.1.0.v20171102-1854, but database has build version 4.1.0.v20170505-0431. This is likely to cause hard to fix errors. Please contact administrator. [16] ==数据库版本 因为数据库不会按照每天的程序版本自动构建发布,通常整体发布得比较慢,比如我的版本是2016-10-31。 demo数据库的版本通过db.isDatabaseOK检查,调用adempiere.java定义变量DB_VERSION,最后存储在AD_System表的version字段。 另外一个关键的数据库信息:补丁sql版本,其字段为LastMigrationScriptApplied,比如201705121535_IDEMPIERE-3358_ASP_indexes.sql,表示最后导入的升级脚本版本。 ==版本检查 当你安装完导入demo数据库,系统检查数据库(DB)版本和程序(CI)版本是否一致的。 db版本取自:AD_System表LastBuildInfo字段,比如${env.ADEMPIERE_VERSION} 20080428-1232。 ci版本取自:系统配置参数APPLICATION_MAIN_VERSION或者osgi bundle:org.adempiere.base版本,比如4.1.0.v20170505-0431 ==数据库签名 AD_System表IsFailOnBuildDiffer设置如果版本不同是否禁止启动,默认是N。所以不用担心版本差异警告。 当你的数据库已开始进行版本管理,你可以配置系统参数解决这个问题: 1. 运行sign-database-build.bat (窗口会一闪而过,没有日志)。 2. 或者从127.0.0.1首页登录,拷贝version信息,到【系统-系统管理-系统规则-系统】窗口更新Last build version字段。 当你再次运行服务器时,版本就一致了。 3. 或者update AD_System set LastBuildInfo='登录(127.0.0.1)首页看到的第一个版本记录'; 由于历史代码原因,idempiere加了一个系统配置参数APPLICATION_MAIN_VERSION,缺省使用bundle version显示在登陆页。(参考3) 参考: 1. DB.java的isDatabaseOk, isBuildOK方法 , 里面有详细逻辑。 2. https://www.compiere-distribution-lab.net/2016/06/28/idempiere-lab-%E3%82%B5%E3%83%BC%E3%83%90%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AEdb%E3%83%93%E3%83%AB%E3%83%89%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/ 3. https://idempiere.atlassian.net/browse/IDEMPIERE-2259 文件介绍 ==Setup== 新安装的配置脚本:setup.bat,setup.ini 可选命令行的配置脚本:console-setup.bat,console-setup-alt.bat 配置后的环境文件: idempiereEnvTemplate.properties,(环境变量模板) idempiereEnv.properties,(setup后的环境变量) idempiere.properties (swing的连接文件) ==运行== 批处理运行模式的服务器:idempiere-server.bat 已经打包好的执行文件:idempiere.exe,adempiere.ini 如果在win要以服务运行,可找下adempiere的服务安装批处理 ==其他== 升级相关:update.bat(迁移更新部署),director.bat(p2 director部署) 数据库签名:sign-database-build.bat,sign-database-build-alt.bat 不知道什么文件:lancher.exe (运行后静默后台) ==目录== 日志目录:%IDEMPIERE_HOME%\log 工具目录:%IDEMPIERE_HOME%\utils 数据目录:%IDEMPIERE_HOME%\data 注:data\seed为初始数据库导入目录 Adempiere.jar (oracle数据库压缩包) Adempiere_pg.jar (postgresql>9.0数据库压缩包) Adempiere_pg84.jar (postgresql<9.0以前的版本,不用管) 源码下载问题 1、sf这个服务器的地址很多镜像不稳定 org.adempiere.sdk-feature/materialize.properties 替换downloads.sourceforge.net为[your_closest_mirror_here].dl.sourceforge.net 2、离线所有jar包 下载所有的离线包,修改materialize.properties的URL路径。 参考http://wiki.idempiere.org/en/Offline_all_material_of_idempiere 登陆首页问题 源码:org.adempiere.server\ 执行文件:org.adempiere.server_4.1.0.v20170505-0431.jar 修改idempiere.jsp文件中的的google api脚本可以加快显示速度,去掉L15-19的如下代码 <% if(Prop.isRssOn()){ out.write("<script type=\"text/javascript\" language=\"javascript\" src=\"http://www.google.com/jsapi?key=ABQIAAAAFEyVt-pBJaTXzM__EKlCrBRyn6VRRdQGMLQqRPPw1fs6QDtVcBRGklOHzrf7hmoAX3qgxg4t5ImqRA\"></script>\n"); out.write("<script type=\"text/javascript\" language=\"javascript\" src=\"resources/gfeedfetcher.js\"></script>"); } %> JRE问题 开发环境,org.adempiere.ui.swing一直报错,jpedal.jar无法解析, 1. org.adempiere.ui.swing 这个project上右键,build path - configurate build path 2. libraries ,更改JRE版本为 1.7 3. 重新刷新project,clear这个项目的build信息,然后build,OK. 虽然swing已经废弃了,解决问题的方法值得注意。 平台环境问题 product的平台环境是win32, win32, x86_64 ,run configuration或者debug configuration 配置plug-ins, 校验下插件,提示 org.eclipse.equinox.launcher.gtk.linux.x86_64与平台不一致,选择org.eclipse.equinox.launcher.win32.win32.x86_64 这个插件即可。 再次检查插件,没有报错,免得每次弹出检查烦人。 源码材料化报错 如果插件的jar下载不全,插件在材料化的时候就会出现error。 方法一:在copyjars.xml和copysources.xml上面build,刷新项目 方法二:在项目文件夹上右键,选择buckminster-invoke action-fetch.dependency.jars,完成后再执行buckminster.clean https://groups.google.com/d/msg/idempiere/Zhqwu0gZfjY/iYGL6UKpAwAJ 数据库与源码不一致 数据库版本一般不会用更新脚本在每天发布。你需要手动添加一些补丁迁移脚本,你可以在官方源码网站找到这些脚本,当然使用TortoiseHg保持源码更新更好。 问题:relation "ad_postit" does not exist 解决:导入 \migration\i4.1z\postgresql\201611241746_IDEMPIERE-905.sql 即可。 官方源码补丁脚本: https://bitbucket.org/idempiere/idempiere/src/9110e4326d3394fbee10949724d081473ce802ba/migration/?at=default 乱码问题 Java的运行环境编码取决于OS的编码。如果你的系统运行在"非UTF-8"的系统上(比如中文WIN),那java的运行编码(还有时间格式)都取决于系统编码(比如GBK),乱码由此产生。 你可以指定java运行的编码,比如加入-Dfile.encoding="UTF-8" , -Dsun.jnu.encoding="UTF-8" 。 注意,控制台按照系统编码来进行输出,而不是按照运行编码来输出,乱码由此产生。 日志尚未发现问题。 win7 中文安装idempiere server,产生乱码的地方有,如: 1. csv导入模板 2. 实体初始化向导 3. OS任务的结果输出 解决乱码:idempiere-server.bat在java后面加入参数 -Dfile.encoding="UTF-8" 如果控制台乱码,你可以输入chcp 65001,并选择双字节字体。 字体问题 环境:中文win7,JRE1.8 问题:pdf,jfreechart图标字体为繁体“MingLiu”字体,想更改成喜欢的“宋体”或者“雅黑”字体 步骤: 1. 找到$JAVA_HOME$\jre\lib,修改fontconfig.properties.src 文件名为 fontconfig.properties 2. 编辑 fontconfig.properties,加入喜欢的字体定义(逻辑字体有5种,样式有4种,总共20种字体) serif.plain.chinese-ms936=SimSun serif.plain.chinese-ms936-extb=SimSun-ExtB serif.bold.chinese-ms936=SimSun serif.bold.chinese-ms936-extb=SimSun-ExtB serif.italic.chinese-ms936=SimSun serif.italic.chinese-ms936-extb=SimSun-ExtB serif.bolditalic.chinese-ms936=SimSun serif.bolditalic.chinese-ms936-extb=SimSun-ExtB sansserif.plain.chinese-ms936=SimSun sansserif.plain.chinese-ms936-extb=SimSun-ExtB sansserif.bold.chinese-ms936=SimSun sansserif.bold.chinese-ms936-extb=SimSun-ExtB sansserif.italic.chinese-ms936=SimSun sansserif.italic.chinese-ms936-extb=SimSun-ExtB sansserif.bolditalic.chinese-ms936=SimSun sansserif.bolditalic.chinese-ms936-extb=SimSun-ExtB monospaced.plain.chinese-ms936=SimSun monospaced.plain.chinese-ms936-extb=SimSun-ExtB monospaced.bold.chinese-ms936=SimSun monospaced.bold.chinese-ms936-extb=SimSun-ExtB monospaced.italic.chinese-ms936=SimSun monospaced.italic.chinese-ms936-extb=SimSun-ExtB monospaced.bolditalic.chinese-ms936=SimSun monospaced.bolditalic.chinese-ms936-extb=SimSun-ExtB dialog.plain.chinese-ms936=SimSun dialog.plain.chinese-ms936-extb=SimSun-ExtB dialog.bold.chinese-ms936=SimSun dialog.bold.chinese-ms936-extb=SimSun-ExtB dialog.italic.chinese-ms936=SimSun dialog.italic.chinese-ms936-extb=SimSun-ExtB dialog.bolditalic.chinese-ms936=SimSun dialog.bolditalic.chinese-ms936-extb=SimSun-ExtB dialoginput.plain.chinese-ms936=SimSun dialoginput.plain.chinese-ms936-extb=SimSun-ExtB dialoginput.bold.chinese-ms936=SimSun dialoginput.bold.chinese-ms936-extb=SimSun-ExtB dialoginput.italic.chinese-ms936=SimSun dialoginput.italic.chinese-ms936-extb=SimSun-ExtB dialoginput.bolditalic.chinese-ms936=SimSun dialoginput.bolditalic.chinese-ms936-extb=SimSun-ExtB 注意: 1. 确保GBK字体搜索顺序如下: sequence.serif.GBK=alphabetic,chinese-ms936,dingbats,symbol,chinese-ms936-extb 2. 修改字体失败顺序如下,将简体字符集放在繁体前面 (未测试,待验证,猜测应该不起作用) sequence.fallback=lucida,symbols,\ chinese-ms936,chinese-gb18030,chinese-ms950,chinese-hkscs,\ japanese,korean,chinese-ms950-extb,chinese-ms936-extb,georgian 3. 系统的字符集,比如 GB2312 才6763汉字,GBK 有21886 汉字(win7使用GBK字符集),别搞系统都无法显示的汉字(比如GB18030有70244 汉字),否则乱码。 参考: https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html http://www.mamicode.com/info-detail-1094483.html 一个“”字引发的痛苦经历 字体修改对比 重新安装 linux下重新安装4.1 报错 Setup idempiere Server java.lang.RuntimeException: Error initializing storage. at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:77) 解决办法: remove (or rename) the directory setup\configuration\org.eclipse.osgi\.manager, Simply deleted all the .fileTabLock files and other .fileTable.* files. https://groups.google.com/d/msg/idempiere/O9YdENpYEMs/IM646omFEQAJ jetty 1. ~~解决服务器限制form大小为200000的限制~~(官方已修复) https://idempiere.atlassian.net/browse/IDEMPIERE-2490 (官方已修复) %iDempiereHome%\jettyhome\etc\jetty.xml 新增 <Call name="setAttribute"> <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg> <Arg>1048576</Arg> </Call> 开启远程X11 ZK webui apparently attempts to communicate with X display server, 你会碰到:Can't connect to X11 window server, 原因:系统变量或者路径无法正确读取,导致系统无法正常运行。 解决:检查idempiere.properties文件,或者重新运行安装setup程序。 ==其他== 以下是真正解决X11的问题,但是与上述原因已经无关了。 一、配置sh的启动参数 changing the $JAVA variable in idempiere-server.sh to $JAVA -Djava.awt.headless=true -Dosgi........................................ https://groups.google.com/d/msg/idempiere/y6WZsHnSc30/J9hnG7KCXH4J 二、或者配置 xserver-allow-tcp=YES 如果你是用LightDM /etc/lightdm/lightdm.conf [SeatDefaults] greeter-session=unity-greeter user-session=ubuntu xserver-allow-tcp=true (没有,就加入这条) 或者你使用Ubuntu 16.04 /usr/share/lightdm/lightdm.conf.d/100-custom.conf [SeatDefaults] xserver-allow-tcp=true (没有,就加入这条) 或者你使用GDM /usr/share/gdm/gdm.schemas, setting the key security/DisallowTCP(这要设置”不开启“) 重启X-Server sudo restart lightdm If you have problems restarting, just ps ax | grep lightdm and kill all the associated processes, then: sudo start lightdm https://askubuntu.com/questions/72812/how-to-disable-nolisten